import * as THREE from "three";
import { VTKLoader } from 'three/examples/jsm/loaders/VTKLoader.js'
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls";
import * as dat from 'dat.gui'
import { DoubleSide } from "three";
var w = window.innerWidth
var h = window.innerHeight
var scene, camera, renderer, gui, cameraParams, light, lightParams


function main() {
  init()
  setLine()
  setLight()
  render()
}

function init() {
  // 创建场景对象Scene
  scene = new THREE.Scene();

  camera = new THREE.PerspectiveCamera(75, w / h, 0.1, 1000)
  camera.position.x = 0
  camera.position.y = 0
  camera.position.z = 0.2
  camera.up.x = 0
  camera.up.y = 1
  camera.up.z = 0
  camera.lookAt({ x: 0, y: 0, z: 0 })

  renderer = new THREE.WebGLRenderer()
  renderer.setClearColor('#8edee2')
  renderer.setSize(w, h)
  document.body.appendChild(renderer.domElement)
}

function setLine() {
  new VTKLoader().load('/static/bunny.vtk', (geometry) => {
    geometry.center();
    geometry.computeFaceNormals()
    geometry.computeVertexNormals()
    var material = new THREE.MeshBasicMaterial({ color: 0xffff00, side: THREE.DoubleSide })
    var mesh = new THREE.Mesh(geometry, material)
    scene.add(mesh)
  })
}

function setLight() {
  var light2 = new THREE.DirectionalLight(0xffff00, 0.6)
  light2.position.set(0, 0, -800)
  scene.add(light2)

  light = new THREE.DirectionalLight(0xffff00, 0.7,1000,1)
  light.position.set(0, 0, 800)
  scene.add(light)
}

function render() {

  renderer.render(scene, camera)
}

main()
/** --------------------鼠标控件对象--------------------- */
let controls = new OrbitControls(camera, renderer.domElement); //创建控件对象
controls.addEventListener("change", render); //监听鼠标、键盘事件